Develop a Python script that interacts with an external REST API to fetch data about cryptocurrency prices, stores the data in a SQLite database, and generates a report with the highest and lowest prices over a specified time period.

To achieve this, we'll use the CoinGecko API to fetch cryptocurrency prices and SQLite for storing the data. Here's a step-by-step guide on how to create the script:

1. Install required packages
You will need to install requests and pandas python packages if you don't have them already.

```bash
pip install requests pandas
```

2. Create a Python script

Create a new file named `crypto_report.py` and add the following code:

```python
import requests
import sqlite3
from datetime import datetime, timedelta
import pandas as pd


def get_crypto_data(start_date, end_date):
    url = f"https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from={start_date}&to={end_date}"
    response = requests.get(url)
    return response.json()


def store_data_in_db(data):
    conn = sqlite3.connect("crypto_prices.db")
    cursor = conn.cursor()

    cursor.execute("""
        CREATE TABLE IF NOT EXISTS crypto_prices (
            timestamp INTEGER PRIMARY KEY,
            price REAL
        )
    """)

    for entry in data["prices"]:
        cursor.execute("INSERT OR IGNORE INTO crypto_prices (timestamp, price) VALUES (?, ?)", entry)

    conn.commit()
    conn.close()


def generate_report(start_date, end_date):
    conn = sqlite3.connect("crypto_prices.db")
    df = pd.read_sql_query(f"SELECT * FROM crypto_prices WHERE timestamp >= {start_date} AND timestamp <= {end_date}", conn)
    conn.close()

    highest_price = df.loc[df["price"].idxmax()]
    lowest_price = df.loc[df["price"].idxmin()]

    print("\nReport:")
    print(f"Highest Price: ${highest_price['price']} at {datetime.fromtimestamp(highest_price['timestamp'] / 1000)}")
    print(f"Lowest Price: ${lowest_price['price']} at {datetime.fromtimestamp(lowest_price['timestamp'] / 1000)}")


if __name__ == "__main__":
    start_date = int((datetime.now() - timedelta(days=30)).timestamp())
    end_date = int(datetime.now().timestamp())

    data = get_crypto_data(start_date, end_date)
    store_data_in_db(data)
    generate_report(start_date * 1000, end_date * 1000)
```

This script fetches the Bitcoin price data for the last 30 days from CoinGecko API and stores it in a SQLite database. It then generates a report with the highest and lowest prices during that period.

3. Run the script

Run the script using the following command:

```bash
python crypto_report.py
```

You should see output similar to this:

```
Report:
Highest Price: $48074.52945630339 at 2021-10-20 12:34:37.144000
Lowest Price: $39589.5758296796 at 2021-09-29 14:16:19.216000
```

Note that the dates and prices will vary depending on when you run the script.